package com.yunsc.common.utils;

import org.apache.commons.lang.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @version: 1.0
 * @Author: adan
 * @description:
 * @date: 2024-04-06 0:23
 */

public class DateUtils {
    /** 时间格式(yyyy-MM-dd) */
    public final static String DATE_PATTERN = "yyyy-MM-dd";
    /** 时间格式(yyyy-MM-dd HH:mm:ss) */
    public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

    public final static String DATE_PATTERN_TIME = "yyyyMMddHHmmss";

    /**
     * 日期格式化 日期格式为：yyyy-MM-dd
     * @param date  日期
     * @return 返回yyyy-MM-dd格式日期
     */
    public static String format(Date date) {
        return format(date, DATE_PATTERN);
    }

    /**
     * 日期格式化 日期格式为：yyyy-MM-dd
     * @param date  日期
     * @param pattern  格式，如：DateUtils.DATE_TIME_PATTERN
     * @return 返回yyyy-MM-dd格式日期
     */
    public static String format(Date date, String pattern) {
        if (date != null) {
            SimpleDateFormat df = new SimpleDateFormat(pattern);
            return df.format(date);
        }
        return null;
    }

    /**
     * 日期解析
     * @param date  日期
     * @param pattern  格式，如：DateUtils.DATE_TIME_PATTERN
     * @return 返回Date
     */
    public static Date parse(String date, String pattern) {
        try {
            return new SimpleDateFormat(pattern).parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }


    public static long convertStringToSeconds(String dateString) {
        if (StringUtils.isEmpty(dateString)) {
            return 0;
        }
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        try {
            Date date = dateFormat.parse(dateString);
            return date.getTime() / 1000;
        } catch (Exception e) {
            // System.out.println("日期格式不正确：" + e.getMessage());
            return 0; // 返回0表示转换失败
        }
    }

    public static int convertIntToSeconds(String dateString) {
        if (StringUtils.isEmpty(dateString)) {
            return 0;
        }
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        try {
            Date date = dateFormat.parse(dateString);
            return (int) (date.getTime() / 1000);
        } catch (Exception e) {
            // System.out.println("日期格式不正确：" + e.getMessage());
            return 0; // 返回0表示转换失败
        }
    }

    public static int convertDateToSeconds(String dateString) {
        if (StringUtils.isEmpty(dateString)) {
            return 0;
        }
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        try {
            Date date = dateFormat.parse(dateString);
            return (int) (date.getTime() / 1000);
        } catch (Exception e) {
            // System.out.println("日期格式不正确：" + e.getMessage());
            return 0; // 返回0表示转换失败
        }
    }

    public static String getCurrentDateTime() {
        // 获取当前时间
        Date currentTime = new Date();
        // 日期格式化
        SimpleDateFormat formatter = new SimpleDateFormat(DATE_PATTERN_TIME);
        // 返回当前时间字符串
        return formatter.format(currentTime);
    }

    /**
     * 格式日期：生成标准时间格式
     * @param datetime
     */
    public static String formatDatetime(Integer datetime) {
        if (datetime == null || datetime == 0){
            return null;
        }
        Date createDate = new Date(Long.valueOf(datetime) * 1000);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return format.format(createDate);
    }
}
